package ru.ifmo.thesis.task;

public class TaskGenerationOptions {
	
	private static final int WORKERS_COUNT = 5;
	
	private static final int TASK_GENERATION_COUNT = 7;

	private static final int GENERATE_CONTRACTS_COUNT = 500;

	private static final int LOCATION_GEN_RADIUS = 90;

	private static final int GENERATE_LOCATION_COUNT = 500;
	
	private static final int MAX_FREE_PERIOD = 10;

	private static final int MAX_PENALTY = 10;

	private static final int MAX_FACTOR = 3;

	private int workersCount = WORKERS_COUNT;
	
	private int taskGenerationCount = TASK_GENERATION_COUNT;
	
	private int generateContractsCount = GENERATE_CONTRACTS_COUNT;
	
	private int locationGenRadius = LOCATION_GEN_RADIUS;
	
	private int generateLocationsCount = GENERATE_LOCATION_COUNT;
	
	private int maxFreePeriod = MAX_FREE_PERIOD;
	
	private int maxPenalty = MAX_PENALTY;
	
	private int maxFactor = MAX_FACTOR;
	
	public TaskGenerationOptions() {
	}

	public TaskGenerationOptions setWorkersCount(int workersCount) {
		this.workersCount = workersCount;
		return this;
	}

	public TaskGenerationOptions setTaskGenerationCount(int taskGenerationCount) {
		this.taskGenerationCount = taskGenerationCount;
		return this;
	}

	public TaskGenerationOptions setGenerateContractsCount(int generateContractsCount) {
		this.generateContractsCount = generateContractsCount;
		return this;
	}

	public TaskGenerationOptions setLocationGenRadius(int locationGenRadius) {
		this.locationGenRadius = locationGenRadius;
		return this;
	}

	public TaskGenerationOptions setGenerateLocationsCount(int generateLocationsCount) {
		this.generateLocationsCount = generateLocationsCount;
		return this;
	}

	public TaskGenerationOptions setMaxFreePeriod(int maxFreePeriod) {
		this.maxFreePeriod = maxFreePeriod;
		return this;
	}

	public TaskGenerationOptions setMaxPenalty(int maxPenalty) {
		this.maxPenalty = maxPenalty;
		return this;
	}

	public TaskGenerationOptions setMaxFactor(int maxFactor) {
		this.maxFactor = maxFactor;
		return this;
	}

	public int getWorkersCount() {
		return workersCount;
	}

	public int getTaskGenerationCount() {
		return taskGenerationCount;
	}

	public int getGenerateContractsCount() {
		return generateContractsCount;
	}

	public int getLocationGenRadius() {
		return locationGenRadius;
	}

	public int getGenerateLocationsCount() {
		return generateLocationsCount;
	}

	public int getMaxFreePeriod() {
		return maxFreePeriod;
	}

	public int getMaxPenalty() {
		return maxPenalty;
	}

	public int getMaxFactor() {
		return maxFactor;
	}
}
